<?php
function createBAPNotification($bapID, $status){
	if ($status == 'SI') _createBAPNotification_SI($bapID);
	if ($status == 'SA') _createBAPNotification_SA($bapID);
	if ($status == 'CO') _createBAPNotification_CO($bapID);
	if ($status == 'CA') _createBAPNotification_CA($bapID);
	if ($status == 'CR') _createBAPNotification_CR($bapID);
}

function _createBAPNotification_CR($bapID){
	$CI =& get_instance();
	$CI->load->model(array('jabatan_model','bap_model',
		'bap_notifikasi_model','karyawan_history_jabatan_model'));
	$bapData = $CI->bap_model->select_by_id($bapID);
    $bapData = (array)$bapData->row();
    
    //create notifikasi untuk atasan level 1
    //kirim notifikasi 
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($bapData['bap_pembuat_kary_id'],'CR',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
    
     //kirim notifikasi pada pelaku
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($bapData['kary_id'],'CR',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
    
    //create notifikasi untuk atasan level 2
    //cari atasan dari pembuat BAP
    $pembuat_kary_id = $bapData['bap_pembuat_kary_id'];
    $pembuat_jbt_id = $bapData['bap_pembuat_kary_jbt_id'];
   	$jbt_id = $CI->karyawan_history_jabatan_model->select_by_id($pembuat_jbt_id)->row();
    $jbt_id = $jbt_id->jbt_id;		//jabatan pembuat
    
    //kita cari supervisor jabatan tersebut, dan siapa karyawan yg menjabat
    $jbt_supervisi = $CI->jabatan_model->getSupervisor($jbt_id);	//jabatannya
    $usr_supervisi = $CI->karyawan_history_jabatan_model->getKaryawanActive($jbt_supervisi);	//karyawannya
    
    //kirim notifikasi
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($usr_supervisi,'CO',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
}

function _createBAPNotification_CA($bapID){
	$CI =& get_instance();
	$CI->load->model(array('jabatan_model','bap_model',
		'bap_notifikasi_model','karyawan_history_jabatan_model'));
	$bapData = $CI->bap_model->select_by_id($bapID);
    $bapData = (array)$bapData->row();
    
    //create notifikasi untuk atasan level 1
    //kirim notifikasi 
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($bapData['bap_pembuat_kary_id'],'CA',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
    
     //kirim notifikasi pada pelaku
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($bapData['kary_id'],'CA',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
    
    //create notifikasi untuk atasan level 2
    //cari atasan dari pembuat BAP
    $pembuat_kary_id = $bapData['bap_pembuat_kary_id'];
    $pembuat_jbt_id = $bapData['bap_pembuat_kary_jbt_id'];
   	$jbt_id = $CI->karyawan_history_jabatan_model->select_by_id($pembuat_jbt_id)->row();
    $jbt_id = $jbt_id->jbt_id;		//jabatan pembuat
    
    //kita cari supervisor jabatan tersebut, dan siapa karyawan yg menjabat
    $jbt_supervisi = $CI->jabatan_model->getSupervisor($jbt_id);	//jabatannya
    $usr_supervisi = $CI->karyawan_history_jabatan_model->getKaryawanActive($jbt_supervisi);	//karyawannya
    
    //kirim notifikasi
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($usr_supervisi,'CO',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
}

function _createBAPNotification_CO($bapID){
	
	$CI =& get_instance();
	$CI->load->model(array('jabatan_model','bap_model',
		'bap_notifikasi_model','karyawan_history_jabatan_model'));
	$bapData = $CI->bap_model->select_by_id($bapID);
    $bapData = (array)$bapData->row();
    
    //create notifikasi untuk atasan level 1
    //kirim notifikasi 
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($bapData['bap_pembuat_kary_id'],'CO',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
    
    //create notifikasi untuk atasan level 2
    //cari atasan dari pembuat BAP
    $pembuat_kary_id = $bapData['bap_pembuat_kary_id'];
    $pembuat_jbt_id = $bapData['bap_pembuat_kary_jbt_id'];
   	$jbt_id = $CI->karyawan_history_jabatan_model->select_by_id($pembuat_jbt_id)->row();
    $jbt_id = $jbt_id->jbt_id;		//jabatan pembuat
    
    //kita cari supervisor jabatan tersebut, dan siapa karyawan yg menjabat
    $jbt_supervisi = $CI->jabatan_model->getSupervisor($jbt_id);	//jabatannya
    $usr_supervisi = $CI->karyawan_history_jabatan_model->getKaryawanActive($jbt_supervisi);	//karyawannya
    
    //kirim notifikasi
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($usr_supervisi,'CO',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
}

function _createBAPNotification_SI($bapID){
	$CI =& get_instance();
	$CI->load->model('bap_model');
	$CI->load->model('bap_notifikasi_model');
    $bapData = $CI->bap_model->select_by_id($bapID);
    $bapData = (array)$bapData->row();
    
    //kirim notifikasi pada pelaku
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($bapData['kary_id'],'SI',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
}

function _createBAPNotification_SA($bapID){
	$CI =& get_instance();
	$CI->load->model('bap_model');
	$CI->load->model('bap_notifikasi_model');
    $bapData = $CI->bap_model->select_by_id($bapID);
    $bapData = (array)$bapData->row();
    
    //kirim notifikasi pada pelaku
    $fields = array('bap_notif_target_user','bap_notif_type','bap_notif_post','bap_id');
    $value = array($bapData['kary_id'],'SA',date('Y-m-d H:i:s',time()),$bapID);
    $CI->bap_notifikasi_model->insert(array_combine($fields,$value));
}

function createNotification($perbID, $status){
	if ($status == 'RA') _createNotification_RA($perbID);
	if ($status == 'RE') _createNotification_RE($perbID);
	if ($status == 'AP') _createNotification_AP($perbID);
}

function _createNotification_RA($perbID){
	$CI =& get_instance();
	$CI->load->model('perbuatan_notifikasi_model');
	$CI->load->model('perbuatan_detil_model');
    $CI->load->model('karyawan_history_jabatan_model');
    $CI->load->model('jabatan_model');
    $deperbData = $CI->perbuatan_detil_model->select_by_perbuatan($perbID);
    
    foreach($deperbData->result_array() as $row){
    	//jabatan 
    	$kary_jbt_id = $row['kary_jbt_id'];
    	$jbt_id = $CI->karyawan_history_jabatan_model->select_by_id($kary_jbt_id)->row();
    	$jbt_id = $jbt_id->jbt_id;		//jabatan pelaku
    	
    	//kita cari supervisor jabatan tersebut, dan siapa karyawan yg menjabat
    	$jbt_supervisi = $CI->jabatan_model->getSupervisor($jbt_id);	//jabatannya
    	$usr_supervisi = $CI->karyawan_history_jabatan_model->getKaryawanActive($jbt_supervisi);	//karyawannya
    	
    	//insert notifikasi
    	$CI->perbuatan_notifikasi_model->insert(array(
    		'perb_notif_target_user'=>$usr_supervisi,
    		'perb_notif_type'=> 'RA',
        	'perb_notif_post'=> date("Y-m-d H:i:s",time()),
        	'perb_id'=>$perbID
		));
    }
}

function _createNotification_RE($perbID){
	//notifikasi untuk yang melaporkan bahwa laporan ditolak
	$CI =& get_instance();
	$CI->load->model('perbuatan_notifikasi_model');
	$CI->load->model('perbuatan_model');
	$CI->load->model('karyawan_model');
    $perbData = (array)$CI->perbuatan_model->select_by_id($perbID)->row();
    
    //convert user id to alias
    $alias = $CI->karyawan_model->select_by_alias($perbData['perb_poster'])->row();
    $alias = $alias->kary_id;
    
    //insert notifikasi
    $CI->perbuatan_notifikasi_model->insert(array(
    	'perb_notif_target_user'=>$alias,
    	'perb_notif_type'=> 'RE',
        'perb_notif_post'=> date("Y-m-d H:i:s",time()),
        'perb_id'=>$perbID
	));
}

function _createNotification_AP($perbID){
	$CI =& get_instance();
	$CI->load->model('perbuatan_notifikasi_model');
	$CI->load->model('bap_sign_model');
    
    //create notifikasi untuk pelapor dan saksi
    $bapData = (array)$CI->bap_model->select_by_perbID($perbID)->row();
    $saksiData = $CI->bap_sign_model->select_by_bap($bapData['bap_id']);
    foreach($saksiData->result_array() as $row){
    	//lompati pelaku, nanti diberikan notifikasi tersendiri
//    	if ($row['bap_sign_type']=="AC") continue;
    	
	    //insert notifikasi
	    $CI->perbuatan_notifikasi_model->insert(array(
	    	'perb_notif_target_user'=>$row['kary_id'],
	    	'perb_notif_type'=> 'AP',
	        'perb_notif_post'=> date("Y-m-d H:i:s",time()),
	        'perb_id'=>$perbID
		));
    }
}